import { useEffect, useState } from "react";
import {useLocation} from "react-router-dom";
import {useSelector} from "react-redux";

function isAuth(token,pathname) {
    // const {token}=useSelector(state => state.userinfo)
    console.log(token)
    // const {pathname}=useLocation()
    //处登录页面
    if (pathname == '/login'){
        return Promise.resolve();
    }else {  //处非登录页面
        if (token){  //有token
            return Promise.resolve();
        }else {  //无token
            return Promise.reject();
        }
    }

    // 模拟鉴权成功
    // return Promise.resolve();
    // 模拟鉴权失败
    // return Promise.reject();
}

function UseAuth() {
    const {token}=useSelector(state => state.userinfo)
    const {pathname}=useLocation()
    // 用于存储鉴权结果
    // true 成功
    // false 失败 (默认值)
    const [auth, setAuth] = useState(false);
    // 用于存储异步状态
    // true 等待 (默认值)
    // false 结束
    const [loading, setLoading] = useState(true);
    useEffect(() => {
        // 开始鉴权
        isAuth(token,pathname)
            // 成功
            .then(() => setAuth(true))
            // 失败
            .catch(() => setAuth(false))
            // 不管成功还是失败, 都将异步状态更新为结束
            .finally(() => setLoading(false));
    }, []);
    // 返回异步状态和鉴权结果
    return { loading, auth };
}

export default UseAuth;
